Use fit-window-to-buffer again
authorBar Magal <barmagal@gmail.com>
Thu, 9 Jul 2015 15:56:36 +0000 (18:56 +0300)
committerBar Magal <barmagal@gmail.com>
Thu, 9 Jul 2015 15:56:36 +0000 (18:56 +0300)
which-key.el

index aa4a2897605c8d0b3946c495ad46149b8eb95f8d..a95d2cef00a1df823f4b223b033ec75b93f781b8 100644 (file)
@@ -237,7 +237,9 @@ the frame."
     (+ text-width
        (/ (frame-fringe-width) char-width)
        (/ (frame-scroll-bar-width) char-width)
-       (if (which-key/char-enlarged-p) 1 0))))
+       (if (which-key/char-enlarged-p) 1 0)
+       ;; add padding to account for possible wide (unicode) characters
+       3)))
 
 (defun which-key/total-width-to-text (total-width)
   "Convert window total-width to window text-width.
@@ -249,7 +251,9 @@ character width as the frame."
     (- total-width
        (/ (frame-fringe-width) char-width)
        (/ (frame-scroll-bar-width) char-width)
-       (if (which-key/char-enlarged-p) 1 0))))
+       (if (which-key/char-enlarged-p) 1 0)
+       ;; add padding to account for possible wide (unicode) characters
+       3)))
 
 (defun which-key/char-enlarged-p (&optional frame)
   (> (frame-char-width) (/ (float (frame-pixel-width)) (window-total-width (frame-root-window)))))
@@ -315,12 +319,16 @@ need to start the closing timer."
 (defun which-key/show-buffer-minibuffer (act-popup-dim)
   nil)
 
-(defun which-key/show-buffer-side-window (act-popup-dim)
-  (let* ((height (car act-popup-dim))
-         (width (which-key/text-width-to-total (cdr act-popup-dim)))
-         (side which-key-side-window-location)
-         (alist (delq nil (list (when height (cons 'window-height height))
-                                (when width (cons 'window-width width))))))
+;; &rest params because `fit-buffer-to-window' has a different call signature
+;; in different emacs versions
+(defun which-key/fit-buffer-to-window-horizontally (&optional window &rest params)
+  (let ((fit-window-to-buffer-horizontally t))
+    (apply #'fit-window-to-buffer window params)))
+
+(defun which-key/show-buffer-side-window (_act-popup-dim)
+  (let* ((side which-key-side-window-location)
+         (alist '((window-width . which-key/fit-buffer-to-window-horizontally)
+                  (window-height . fit-window-to-buffer))))
     ;; Note: `display-buffer-in-side-window' and `display-buffer-in-major-side-window'
     ;; were added in Emacs 24.3